home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / SLTPU70C / SAMPLE5.PAS < prev    next >
Pascal/Delphi Source File  |  1991-07-10  |  3KB  |  106 lines

  1.  
  2. Program Sample5;
  3.  
  4.   { Sample program to read a message from a subboard }
  5.  
  6.  
  7. Uses General,Block,Filedef,SubList,Message,Users;
  8.  
  9. var msg: msgptr;
  10.     subboard: string;
  11.     Msgnum: longint;
  12.     valid: boolean;
  13.     header: headertype;
  14.     p: SubListPtr;
  15.     result: longint;
  16.     i: integer;
  17.  
  18.  
  19. Begin
  20.  
  21.   { Open CONFIG, NODES and USER files }
  22.  
  23.   if OpenFiles([CONFIGF,NODESF]) and OpenUserFile then begin
  24.  
  25.     { Initialize subboard list }
  26.     SubListInit(Subboards);
  27.  
  28.     { Prompt user to enter a subboard name }
  29.     repeat
  30.       writeln('Enter Subboard Name: ');
  31.       readln(subboard);
  32.       upstr(subboard);          { make all uppercase }
  33.       stripspaces(subboard);    { strip spaces }
  34.  
  35.       p:=ListIndex(subboard);   { get list index, if valid subboard name }
  36.       if (p=Nil) or (p^.fname<>subboard) then begin
  37.         writeln('Invalid subboard. Try again.');
  38.         valid:=false;
  39.       end else valid:=true;
  40.  
  41.     until valid;
  42.  
  43.     if OpenSub(subboard,Mainsub,Allfiles) then begin     { Open subboard }
  44.  
  45.       { display message number range }
  46.       writeln;
  47.       writeln('Messages are numbered from ',
  48.         Mainsub.Subinfo.Firstmsg,' to ',Mainsub.Subinfo.Lastmsg);
  49.  
  50.       repeat
  51.         { prompt user to enter desired message number }
  52.         writeln;
  53.         writeln('Enter Message Number: ');
  54.         readln(Msgnum);
  55.  
  56.         { attempt to lookup the message header }
  57.         result:=FindHeader(Header,Seq,Msgnum,0);
  58.  
  59.         if (result=0) then begin
  60.           writeln('That message does not exist.');
  61.           valid:=false;
  62.         end else begin
  63.           { write information from message header }
  64.           writeln;
  65.           writeln('From: ',header.from);
  66.           writeln('  To: ',header.touser);
  67.           writeln('Date: ',StrDate(header.date));
  68.           writeln('Read: ',header.rd,' Times');
  69.           writeln;
  70.  
  71.           { retrieve text from message }
  72.           UnpackMsg(Header.Txt,Msg,True);
  73.  
  74.           { display lines of text }
  75.           for i:=1 to msg^.msglen do
  76.             writeln(msg^.msglin[i]^);
  77.  
  78.           { increment number of times read counter in header }
  79.           if LockFile(Mainsub.Headerf) then begin
  80.             ReadBlockFile(Mainsub.Headerf,result,@header);
  81.             inc(header.rd);
  82.             WriteBlockFile(Mainsub.Headerf,result,@header);
  83.             UnlockFile(Mainsub.Headerf);
  84.           end;
  85.  
  86.           { dispose of message ram buffer }
  87.           DisposeMsg(msg);
  88.  
  89.           valid:=true;
  90.         end;
  91.  
  92.       until valid;
  93.  
  94.  
  95.       { close the subboard }
  96.       CloseSub(Mainsub);
  97.  
  98.     end
  99.     else writeln('Error opening subboard!');
  100.  
  101.     CloseUserFile;
  102.     CloseAllFiles;
  103.   end
  104.   else writeln('Could not open CONFIG File!');
  105.  
  106. end.